perm filename SUBTR.SAI[PIC,HE] blob sn#430346 filedate 1979-04-04 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	ENTRY SUBTR,ADDIM
C00006 ENDMK
C⊗;
ENTRY SUBTR,ADDIM;
BEGIN "SUBTR"
REQUIRE "BUFDEC.SAI" SOURCE!FILE;
 INTERNAL SIMPLE INTEGER PROCEDURE SUBTR(INTEGER BUF1,BUF2);
COMMENT ******************************************
     THIS PROCEDURE SUBTRACTS THE PICTURE IN BUF1 FROM THAT IN BUF2,
           AND PLACES THE RESULT IN BUF3).
************************************************;

  BEGIN "SUBTRXX"
    INTEGER I,J,NEWBUF,PTR1,PTR2,PTR3,ISTOP,JSTOP;
    IF BUFSZ(BUF1) ≠ BUFSZ(BUF2) THEN
       PRINT("SUBTR: PICTURE NOT EQUAL IN SIZE - WILL NOT PROCESS",CRLF)
    ELSE
	BEGIN
	GETBUF(ISTOP←ROWS(BUF1),JSTOP←COLMS(BUF1),BYTSZ(BUF1),NEWBUF←FNDBUF);
	PUTSUB(ISUBST(BUF1),JSUBST(BUF1),NEWBUF);
	COPHDR(BUF1,NEWBUF);
	FOR I←1 THRU ISTOP DO
	    BEGIN
	    PTR1←INPTR(I,1,BUF1);
	    PTR2←INPTR(I,1,BUF2);
	    PTR3←OUTPTR(I,1,NEWBUF);
	    FOR J←1 THRU JSTOP DO
		IDPB(ABS(ILDB(PTR1)-ILDB(PTR2)),PTR3);
	    END;
	RETURN(NEWBUF);
	END;
  END "SUBTRXX";

 INTERNAL SIMPLE INTEGER PROCEDURE ADDIM(INTEGER BUF1,BUF2,MODE);
COMMENT ******************************************
     THIS PROCEDURE ADDS THE PICTURE IN BUF1 FROM THAT IN BUF2,
           AND PLACES THE RESULT IN BUF3).
************************************************;
  BEGIN "ADDIM"
    INTEGER I,J,NEWBUF,PTR1,PTR2,PTR3,ISTOP,JSTOP,VMAX,VAL;
    IF BUFSZ(BUF1) ≠ BUFSZ(BUF2) THEN
       PRINT("ADDIM: PICTURE NOT EQUAL IN SIZE - WILL NOT PROCESS",CRLF)
    ELSE
	BEGIN
	GETBUF(ISTOP←ROWS(BUF1),JSTOP←COLMS(BUF1),VMAX←BYTSZ(BUF1),NEWBUF←FNDBUF);
	PUTSUB(ISUBST(BUF1),JSUBST(BUF1),NEWBUF);
	COPHDR(BUF1,NEWBUF);
	VMAX←(2↑VMAX)-1;
	FOR I←1 THRU ISTOP DO
	    BEGIN
	    PTR1←INPTR(I,1,BUF1);
	    PTR2←INPTR(I,1,BUF2);
	    PTR3←OUTPTR(I,1,NEWBUF);
	    FOR J←1 THRU JSTOP DO
		BEGIN
		VAL←ILDB(PTR1)+ILDB(PTR2);
		IF MODE=0 THEN IDPB(VAL,PTR3)
		    ELSE IDPB(VAL MIN VMAX,PTR3);;
		END;
	    END;
	RETURN(NEWBUF);
	END;
  END "ADDIM";
END "SUBTR";